using Castle.ActiveRecord;
using System;
using System.Collections.Generic;
namespace Matriculex.Dominio
{
    [ActiveRecord("disciplina")]
    [Serializable]
    public class Disciplina : ActiveRecordBase<Disciplina>
    {
        public Disciplina()
        {
            AlunosPreInscritos = new List<Aluno>();
            Ativado = true;
        }

        [PrimaryKey]
        public int Id { get; set; }
        [Property]
        public string Codigo { get; set; }
        [Property]
        public string Nome { get; set; }
        [Property]
        public bool Ativado { get; private set; }

        private IList<Aluno> alunosPreInscritos = new List<Aluno>();
        [HasAndBelongsToMany(typeof(Aluno), Table="aluno_disciplina", ColumnKey="disciplina_id",
            ColumnRef="aluno_id", Inverse=true)]
        public IList<Aluno> AlunosPreInscritos
        {
            get
            {
                return new List<Aluno>(alunosPreInscritos).AsReadOnly();
            }
            private set { alunosPreInscritos = value; }
        }

        public void Ativar()
        {
            Ativado = true;
        }

        public void Desativar()
        {
            Ativado = false;
        }
    }
}